package com.zhitan.netty.bean;

import lombok.Data;
import lombok.ToString;

import java.util.Map;

@Data
@ToString
public class NettyMessage {

    /**
     * 源数据
     */
    private String originalData;

    /**
     * 数据总长度
     */
    private Integer allDataLength;

    /**
     * 起始标识 起始标识符代表一帧数据的开始，固定为 0x68。
     */
    private byte startFlag;

    /**
     * 数据长度 数据域字节数，数据域长度不超过 200 字节。不加密时为原数据长度,加密时，为加密后数据
     * 长度。其值为“序列号域+加密标志+帧类型标志+消息体”字节数之和。
     */
    private short dataLength;

    /**
     * 序列号域即为数据包的发送顺序号，从 0 开始顺序增加，如是应答数据包，则与询问数据包
     * 序号保持一致，当桩与平台网络断开重新建立连接或者溢出后归 0。
     */
    private short packageIndex;

    /**
     * 加密标志只针对消息体（数据单元）。0x00:不加密，0x01:3DES
     */
    private byte encryptionType;

    /**
     * 帧类型标志定义了上下行数据帧。
     */
    private byte frameType;

    /**
     * 数据信息
     */
    private Map<String, Object> dataMap;

    /**
     * 帧校验域：从序列号域到数据域的 CRC 校验，校验多项式为 0x180D,低字节在前，高字节在后，
     * 计算方式见附录。
     */
    private short frameCheck;
}
